﻿'''
题目描述
给定参数n，从1到n会有n个整数：1,2,3,…,n,这n个数字共有n!种排列。
按大小顺序升序列出所有排列的情况，并一一标记，
当n=3时,所有排列如下:
“123” “132” “213” “231” “312” “321”
给定n和k，返回第k个排列。
输入描述
输入两行，第一行为n，第二行为k，
给定n的范围是[1,9],给定k的范围是[1,n!]。
输出描述
输出排在第k位置的数字。
示例1
输入
3
3
输出
213
说明
3的排列有123,132,213…,那么第三位置就是213
示例2
输入
2
2
输出
21
说明
2的排列有12,21，那么第二位置的为21。
'''
#求n！
def n_counts(n):    
    result =1
    for i in range(1, n+1):
        result *= i
    return result

#读取输入
n = int(input().strip())
k = int(input().strip())
num_arr = []
for i in range(1,n + 1):
    num_arr.append(str(i))  #将1-n存储为字符串

#存储输出结果
output_result = []
while len(num_arr) != 0:    #数组中还有数字
    current_counts = n_counts(len(num_arr) - 1) #（n-1）!
    index = (k -1) // current_counts            #当前k对应的数字在数组中的索引 (k-1)//(n-1)!，k-1避免6/3！索引不对的情况
    output_result.append(num_arr[index])        #当前数字加入到结果列表
    num_arr.pop(index)                          #弹出当前数字
    k = k % current_counts                      #更新k
print(''.join(output_result))                   #输出结果



